Mock_exam02 [ for study]

1. 통계 분석(사용 데이터: Admission)
1)
종속변수인 Chance_of_Admit(입학 허가 확률)와 독립변수(GRE, TOEFL, Univ_Rating, SOP, LOR, CGPA)
에 대하여 피어슨 상관계수를 이용한 상관관계 분석을 수행하고, 그래프를 이용하여 분석결과를 설명하시오.
file_path<-"/Users/csian/Desktop/CSIAN/ADP/ADP-test/ 2/Admission.csv"
data<-read.csv(file_path)
sum(is.na(data))
indep<-colnames(data)[-ncol(data)]
attach(data)
# GRE
cor(GRE, Chance_of_Admit)
cor.test(GRE, Chance_of_Admit)
# TOEFL
cor(TOEFL, Chance_of_Admit)
cor.test(TOEFL, Chance_of_Admit)
# Univ_Rating
cor(Univ_Rating, Chance_of_Admit)
cor.test(Univ_Rating, Chance_of_Admit)
# SOP
cor(SOP, Chance_of_Admit)
cor.test(SOP, Chance_of_Admit)
# LOR
cor(LOR, Chance_of_Admit)
cor.test(LOR, Chance_of_Admit)
detach(data)
cormat<-cor(data[-7])
plot(data[, -7])
library(corrgram)
corrgram(data[, -7], upper.panel=panel.conf)
2)
GRE, TOEFL, Univ_Rating, SOP, LOR, CGPA, Research가 Chance_of_Admit에 영향을 미치는지
알아보는 회귀분석을 단계적 선택법을 사용하여 수행하고 결과를 해석하시오.
adm_lm<-lm(Chance_of_Admit~., data=data)
summary(adm_lm)
adm_step<-step(adm_lm, direction="both")
adm_lm2<-lm(Chance_of_Admit~GRE+TOEFL+LOR+CGPA, data=data)
3)
단계 선택법을 사용해 변수를 선택한 후 새롭게 생성한 회귀모형에 대한 잔차분석을 수행하고, 그래프를 활용하여
결과를 해석하시오.
#
library(lmtest)
dwtest(adm_lm2)
#
shapiro.test(adm_lm2$residuals)
# +
par(mfrow=c(2, 2))
plot(adm_lm2)
2. 정형 데이터 마이닝(사용 데이터: Titanic)
1) cabin, embarked 변수의 값 중 “”로 처리된 값을 NA로 바꾸고 아래의 데이터 테이블을 보고 문자형, 범주형 변수를 각각
character, factor 형으로 변환하시오.
또, 수치형 변수가 NA인 값을 중앙값으로 대체하고, 범주형 변수가 NA인 값은 최빈값으로 대체하고 age 변수를 아래의 표와 같이
구간화하여 age_1이라는 변수를 생성하고 추가하시오.
file_path<-"/Users/csian/Desktop/CSIAN/ADP/ADP-test/ 2/Titanic.csv"
data<-read.csv(file_path)
sum(is.na(data))
data$cabin[data$cabin==""]=NA
data$embarked[data$embarked==""]=NA
data$survived<-factor(data$survived)
data$sex<-factor(data$sex)
data$embarked<-factor(data$embarked)
library("DMwR2")
data<-centralImputation(data)
sum(is.na(data))
data<-within(data, {
age_1=integer(0)
age_1[age>=0 & age<10]=0
age_1[age>=10 & age<20]=1
age_1[age>=20 & age<30]=2
age_1[age>=30 & age<40]=3
age_1[age>=40 & age<50]=4
age_1[age>=50 & age<60]=5
age_1[age>=60 & age<70]=6
age_1[age>=70 & age<80]=7
age_1[age>=80 & age<90]=8
})
2)
전처리가 완료된 titanic 데이터를 train(70%), test(30%) 데이터로 분할하시오.(set.seed(12345)를 실행한 후,
데이터를 분할하시오)
또, train 데이터로 종속변수인 survied(생존 여부)를 독립변수 pclass, sex, sibsp, parch, fare, embarked로 지정하여
예측하는 분류모델을 3개 이상 생성하고 test 데이터에 대한 예측값을 csv 파일로 제출하시오.
set.seed(12345)
nr<-nrow(data)
train_ind<-sample(1:nr, nr*0.7, replace=T)
train<-data[train_ind, ]
test<-data[-train_ind, ]
use_col<-c("pclass", "sex", "sibsp", "parch", "fare", "embarked", "survived")
train<-train[, use_col]
test<-test[, use_col]
library(adabag)
library(randomForest)
bag<-bagging(survived~., data=train, mfinal=30)
boost<-boosting(survived~., data=train, boos=T, mfinal=30)
rf<-randomForest(survived~., data=train, ntree=20, mtry=sqrt(6))
bag_pred<-predict(bag, test)
boost_pred<-predict(boost, test)
rf_pred<-predict(rf, test)
bag_pred<-bag_pred$class
boost_pred<-boost_pred$class
rf_pred<-as.factor(rf_pred)
#write.csv(bag_pred, "bag_pred.csv")
#write.csv(boost_pred, "boost_pred.csv")
#write.csv(rf_pred, "rf_pred.csv")
3) 생성된 3개의 분류 모델에 대해 성과분석을 실시하여 정확도를 비교하여 설명하시오.
또 ROC curve를 그리고 AUC 값을 산출하시오.
library(caret)
library(ROCR)
confusionMatrix(data=rf_pred, reference=test[, "survived"])
pred<-prediction(as.numeric(rf_pred), as.numeric(test$survived))
perf<-performance(pred, "tpr", "fpr")
plot(perf)
3. 비정형 데이터
1)
“연설문.txt” 데이터를 읽어온 뒤 숫자, 특수 문자 등을 제거하는 전처리 작업을 수행하시오.
library(tm)
library("KoNLP")
file_path<-"/Users/csian/Desktop/CSIAN/ADP/ADP-test/ 2/.txt"
speach<-readLines(file_path)